Een leeg ASP.NET Core project maken
Home

Een leeg ASP.NET Core project maken

Een leeg ASP.NET Core project maken

ASP.NET Core-projecten kan je maken met behulp van sjablonen in Visual Studio of vanaf de. NET Core command line interface (.NET CLI). Visual Studio 2017 geeft een geweldige .NET Core-ontwikkelingservaring - met top-notch debugging, Docker-integratie en vele andere functies - maar ik gebruik de .NET CLI en Cloud9 in deze les. Dan kunnen jullie deze les ook volgen op een Mac of Linux dev machine.

Stappenplan

Je kan een ASP.NET Core applicatie vanaf de command-line interface (CLI) of in Visual Studio. In deze les leren we hoe dat doet vanaf de CLI op Cloud9.

  1. Zorg ervoor dat je je werk op je lokale computer gesynchroniseerd hebt met Cloud9:
    1. Lokaal:
      1. ga naar de map Programmeren3;
      2. git status
      3. git add --all
      4. git commit -m "Tot en met les 9"
      5. indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
      6. git pusch -u origin master
    2. Op Cloud9:
      1. indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
      2. git pull origin master
  2. Ga naar je workspace op Cloud9
  3. We gaan er vanuit dat je .NET Core 2.0 al geïnstalleerd hebt. Zie daarvoor Programmeren met de .NET Core Command Line Interface.
  4. Je hebt een map met de naam dotnetcore in je workspace gemaakt.
  5. Creëer een map in de dotnetcore map van je workspace met de naam aspdotnet.
  6. Om naar de map te gaan typ je in het Terminal venster:
    cd dotnetcore/aspdotnet
    Ga naar de aspdotnet map
    Ga naar de aspdotnet map
  7. Met het commando dotnet kan je nieuwe .NET Core-projecten creëren. Het commando dotnet new zonder extra argumenten toont een lijst met de beschikbare project sjablonen (templates). In het Terminal venster typ je:
    dotnet new
    Cloud9 dotnet new
    Cloud9 dotnet new
  8. We maken een leeg ASP.NET Core project door het uitvoeren van dotnet new web. Refrech de pagina om de nieuw gemaakte bestanden en mappen in de Verkenner te tonen:
    result dotnet new web
    result dotnet new web
  9. Zodra het project is aangemaakt, moet je het kunnen uitvoeren met de instructie dotnet run. In eerdere versies van .NET Core was het nodig om eerst de dotnet restore instructie uit te voeren om de nodige NuGet-pakketten te installeren. Maar vanaf .NET Core 2.0, wordt het restore commando nu automatisch uitgevoerd door CLI commando's die er afhankelijk van zijn. Open de website, die op basis van de sjabloon is gemaakt, door dotnet run uit te voeren en te navigeren naar de URL waarnaar de app luistert. In Windows is dat waarschijnlijk http://localhost:5000, de default url die aan je app wordt toegekend. Op Cloud9 moet je die default url wijzigen omdat Cloud9 app's alleen luistert naar 8080. Open het bestand met de naam Program.cs en wijzig de url waarop je app luistert door de gemarkeerde regel toe te voegen:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Logging;
    
    namespace aspdotnet
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                BuildWebHost(args).Run();
            }
    
            public static IWebHost BuildWebHost(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .UseUrls("http://0.0.0.0:8080")
                    .Build();
        }
    }
  10. Voer de instructie dotnet run uit en open de pagina http://programmeren3-jefinghelbrecht.c9users.io:8080/ (gebruik de naam van je eigen workspace):
    aspdotnet web result dotnet run
    aspdotnet web result dotnet run
  11. Hoe komt die Hello World in het browservenster?
    Als je een ASP.NET Core app maakt maak je eigenlijk een console app die je op Windows, Linux of IOS kan runnen. Er worden twee bestanden automatisch aangemaakt:
    1. In Startup.cs staat wat de app moet doen bij het opstarten
      // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
      public void Configure(IApplicationBuilder app, IHostingEnvironment env)
      {
          if (env.IsDevelopment())
          {
              app.UseDeveloperExceptionPage();
          }
      
          app.Run(async (context) =>
          {
              await context.Response.WriteAsync("Hello World!");
          });
      }
      
      De app configureert de applicatie zodanig dat de uitzonderingspagina geserveerd wordt in geval van problemen. Dit wordt alleen weergegeven als de app wordt uitgevoerd in de ontwikkelmodus. Als de app naar de productie modus overschakelt wanneer deze in een live omgeving wordt ingezet, wordt dit niet uitgevoerd. Ten slotte moeten we beslissen wat er daadwerkelijk moet gebeuren wanneer de app wordt uitgevoerd. Dat doet de app.Run-code. In dit geval schrijft het gewoon "Hello World!" rechtstreeks naar de webrespons stream.
    2. In Program.cs configureer je de dependencies en de middleware van de app:
      public class Program
      {
          public static void Main(string[] args)
          {
              BuildWebHost(args).Run();
          }
      
          public static IWebHost BuildWebHost(string[] args) =>
              WebHost.CreateDefaultBuilder(args)
                  .UseStartup<Startup>()
                  .UseUrls("http://0.0.0.0:8080")
                  .Build();
      }
      
      Middleware verwijst naar de verschillende 'dingen' die hier worden geconfigureerd, zoals het gebruik van Kestrel (cross-platform web server) die impliciet wordt opgestart. Zij zijn de bouwstenen van je webapp en worden uitgevoerd als onderdeel van de pipeline van je applicatie. Middleware is handig voor dingen zoals authenticatie waarbij je elk verzoek om beveiligde inhoud door een verificatiestadium laat gaan voordat de werkelijke inhoud wordt weergegeven.
      Program.cs bevat het startpunt van de applicatie. ASP.NET Core-apps zijn net als console-applicaties en hebben een Main-methode die uitgevoerd wordt de app wordt geöpend. De belangrijkste methoden zijn vrij eenvoudig. Ze maken een IWebHost-object en starten die met Run op.
      In Windows is is http://localhost:5000, de default url die aan je app wordt toegekend. Op Cloud9 moet je die default url wijzigen omdat Cloud9 app's alleen luistert naar poort 8080. Open het bestand met de naam Program.cs en wijzig de url waarop je app luistert door de gemarkeerde regel toe te voegen.
  12. Tenslotte bekijken we het .csproj bestand.
    In onze app is dat het projectbestand met de naam aspdotnet.csproj:
    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot\" />
      </ItemGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
      </ItemGroup>
    
    </Project>
    Dit bestand vertelt MSBuild hoe het project wordt gebouwd - van welke pakketten het afhankelijk is, welke versie van .NET Core te targeten, enzovoort. In vorige versies van .NET Core was dit projectbestand veel groter. .NET Core 2.0 heeft veel moeite gestoken in het korter, eenvoudiger en leesbaarder maken van .csproj-bestanden. Bronbestanden moeten niet langer expliciet moeten worden vermeld. De .NET Core SDK compileert automatisch alle .cs-bestanden die in de map van het projectbestand staan of in een directory onder de .csproj-directory. Op dezelfde manier zullen eventuele .resx-bestanden worden ingebed als bronnen. Als je liever niet alle .cs-bestanden wilt compileren, kan je ze uit de Compile ItemGroup verwijderen of de standaard compile-items volledig uitschakelen door de eigenschap EnableDefaultCompileItems op false te zetten.

    Het element <PackageReference> in het midden van het .csproj-bestand verwijst naar een NuGet-pakket waarvan het project afhankelijk is. Vanaf ASP.NET Core 2.0 dat u nu standaard slechts één meta-pakket (Microsoft.AspNetCore.All). Dit pakket bevat alle andere Microsoft.AspNetCore-pakketten in één korte referentie en maakt ASP.NET Core 2.0 projectbestanden veel kleiner dan projectbestanden van vroegere versies. Extra afhankelijkheden (dependancies) van NuGet kunnen worden toegevoegd door meer <PackageReference> -elementen toe te voegen, door gebruik te maken van de gebruikersinterface van Visual Studio NuGet Package, of met de .NET CLI dotnet add opdracht.

  13. Synchroniseer je Cloud9 workspace met je lokale computer:
    1. Op Cloud9:
      1. ga naar de root van je workspace: cd /home/ubuntu/workspace
      2. git status
      3. git add --all
      4. git commit -m "aspdotnet project gecreëerd op Cloud9"
      5. indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
      6. git pusch -u origin master
    2. Op je lokale computer:
      1. indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
      2. git pull origin master

Bronnen

  1. Steve Smith, ASP.NET Core - Simpler ASP.NET MVC Apps with Razor Pages, September 2017
  2. Mike Rousos, ASP.NET Core - Getting Started with ASP.NET Core 2.0, September 2017
  3. Introduction to ASP.NET Core, 2017-8-3
  4. John Hilton, Create a minimal ASP.NET Core 1.1 web application using the command line

JI
2017-10-18 13:30:15